home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
c
/
tcxl551.zip
/
TCXL_INC.EXE
/
lha
/
INC
/
TCXLMEM.H
< prev
next >
Wrap
Text File
|
1990-10-01
|
11KB
|
198 lines
/*=====[ The TesSeRact(TM) CXL User Interface Development System ]======*
| Copyright (c) 1987-1990, Innovative Data Concepts. All Rights Reserved
|
| This Library is part of IDC's TesSeRact Development Tools product
| line. For information about other IDC products, call 1-215-884-3373.
*----------------------------------------------------------------------*
| <TCXLmem.h> : Definitions and prototypes for TCXL memory subsystem.
*-------------------------------[ Notes ]------------------------------*
| 1) Refer to the EMS, XMS, VCPI and DPMI specifications for further
| information.
| 2) All pointers used by these functions are FAR pointers.
*----------------------------------------------------------------------*
| PGS : $Id: tcxlmem.h 5.51 90/10/01 00:00:00 MLM Release Locker: MLM $
| $Log: tcxlmem.h $
| Revision 5.51 90/10/01 00:00:00 MLM
| TCXL 5.51
|
*======================================================================*/
#ifndef _TCXLmem_
# define _TCXLmem_ 1
# ifndef _TCXLdef_
# include <TCXLdef.h>
# endif
/*- Memory-flag bits ---------------------*/
#define MEM_DPMI 0x01 /* DPMI installed */
#define MEM_VCPI 0x02 /* VCPI installed */
#define MEM_EMS 0x04 /* EMS installed */
#define MEM_XMS 0x08 /* XMS installed */
#define MEM_HMA 0x10 /* HMA installed */
#define EMS_BadSoft 0x80 /*- EMS error-codes ----------------------*/
#define EMS_BadHdw 0x81 /* NOTE: Error-codes above 0x8F are for */
#define EMS_Busy 0x82 /* EMS 4.0 functions only and are not */
#define EMS_BadHandle 0x83 /* supported by this library. See the EMS */
#define EMS_BadFun 0x84 /* spec for further info. */
#define EMS_NoHandles 0x85 /*----------------------------------------*/
#define EMS_MapErr 0x86
#define EMS_NotTotal 0x87
#define EMS_NotFree 0x88
#define EMS_NotZero 0x89
#define EMS_BadPage 0x8A
#define EMS_BadPhys 0x8B
#define EMS_SaveFull 0x8C
#define EMS_SaveDup 0x8D
#define EMS_NoSave 0x8E
#define EMS_BadSub 0x8F
#define XMS_BadFun 0x80 /*- XMS error-codes ----------------------*/
#define XMS_Vdisk 0x81 /* see the XMS spec for further info. */
#define XMS_A20Err 0x82 /*----------------------------------------*/
#define XMS_DrivErr 0x8E
#define XMS_Fatal 0x8F
#define XMS_NoHMA 0x90
#define XMS_HMABusy 0x91
#define XMS_HMASmall 0x92
#define XMS_HMAFree 0x93
#define XMS_NoXMS 0xA0
#define XMS_NoHandle 0xA1
#define XMS_BadHandle 0xA2
#define XMS_BadSrc 0xA3
#define XMS_BadSOff 0xA4
#define XMS_BadDst 0xA5
#define XMS_BadDOff 0xA6
#define XMS_BadLen 0xA7
#define XMS_BadOver 0xA8
#define XMS_Parity 0xA9
#define XMS_NotLock 0xAA
#define XMS_IsLock 0xAB
#define XMS_LockOvr 0xAC
#define XMS_LockFail 0xAD
#define XMS_SmallUMB 0xB0
#define XMS_NoUMB 0xB1
#define XMS_BadUMBSeg 0xB2
/*------------------[ Data objects and access macros ]------------------*/
TYP DwdT _AdrT; /* 32-bit addresses */
TYP IntT _HdlT; /* EMS/XMS handles */
TYP struct _Mem _MemT;
TYP WrdT _SegT, FAR *_SegFP; /* segment addresses */
TYP struct _Xms _XmsT, FAR *_XmsFP;
struct _Mem /* -[ Memory-control object ]----*/
{ BytT mMflg; /* 00|00 : Memory flags */
BytT mDpro; /* 01|01 : DPMI Processor */
WrdT mDflg; /* 02|02 : DPMI Flags */
DwdT mDent; /* 04|04 : DPMI entry point */
WrdT mDver; /* 08|08 : DPMI version */
WrdT mVver; /* 0A|0A : VCPI Version */
WrdT mEseg; /* 0C|0C : EMS Base Segment */
WrdT mEver; /* 0E|0E : EMS Version */
WrdT mEfre; /* 10|10 : EMS Free (16kb page) */
WrdT mEtot; /* 12|12 : EMS Total (16kb page) */
BytT mEerr; /* 14|14 : EMS Error Code */
BytT mXerr; /* 15|15 : XMS Error Code */
WrdT mXver; /* 16|16 : XMS Version */
DwdT mXent; /* 18|18 : XMS Entry Point */
WrdT mXint; /* 1C|1C : XMS Internal Version */
WrdT mHfre; /* 1E|1E : HMA free (para) */
WrdT mXtot; /* 20|20 : XMS total free (1k) */
WrdT mXlrg; /* 22|22 : XMS largest free (1k) */
WrdT mUfre; /* 24|24 : Largest available UMB */
}; /* 26|26 ]-----------------------*/
GBL _MemT CDC _MemCtl; /*- global memory-control object ---------*/
#define MemMflg (_MemCtl.mMflg) /* Memory Flags */
#define MemDPMI (0 != (MemMflg & MEM_DPMI)) /* DPMI installed */
#define MemVCPI (0 != (MemMflg & MEM_VCPI)) /* VCPI installed */
#define MemEMS (0 != (MemMflg & MEM_EMS)) /* EMS installed */
#define MemXMS (0 != (MemMflg & MEM_XMS)) /* XMS installed */
#define MemHMA (0 != (MemMflg & MEM_HMA)) /* HMA installed */
#define MemDpro (_MemCtl.mDpro) /* DPMI Processor */
#define MemD286 (0x02 == MemDpro) /* 286 */
#define MemD386 (0x03 == MemDpro) /* 386 */
#define MemD486 (0x04 == MemDpro) /* 486 */
#define MemDflg (_MemCtl.mDflg) /* DPMI Flags */
#define MemDf32 (1 = MemDflg) /* 32 Bit Support */
#define MemDent (_MemCtl.mDent) /* DPMI entry point */
#define MemDver (_MemCtl.mDver) /* DPMI version */
#define MemVver (_MemCtl.mVver) /* VCPI Version */
#define MemEseg (_MemCtl.mEseg) /* EMS Base Segment */
#define MemEver (_MemCtl.mEver) /* EMS Version */
#define MemEfre (_MemCtl.mEfre) /* EMS Free (16k page) */
#define MemEtot (_MemCtl.mEtot) /* EMS Total (16k page) */
#define MemEerr (_MemCtl.mEerr) /* EMS Error Code */
#define MemXerr (_MemCtl.mXerr) /* XMS Error Code */
#define MemXver (_MemCtl.mXver) /* XMS Version */
#define MemXent (_MemCtl.mXent) /* XMS Entry Point */
#define MemXint (_MemCtl.mXint) /* XMS Internal Version */
#define MemHfre (_MemCtl.mHfre) /* HMA free (para) */
#define MemXtot (_MemCtl.mXtot) /* XMS total free (1k) */
#define MemXlrg (_MemCtl.mXlrg) /* XMS largest free (1k)*/
#define MemUfre (_MemCtl.mUfre) /* Largest free UMB */
struct _Xms /*-[ XMS Move Struct ]-----*/
{ DwdT xSlen; /* 00|00 : Length */
_HdlT xShdl; /* 04|04 : Source handle */
_AdrT xSptr; /* 06|06 : Source pointer */
_HdlT xTdhl; /* 0A|0A : Target handle */
_AdrT xTptr; /* 0C|0C : Target pointer */
}; /* 10|10 ]-----------------*/
#define XmsSlen(x) ((x)->xSlen)
#define XmsShdl(x) ((x)->xShdl)
#define XmsSptr(x) ((x)->xSptr)
#define XmsTdhl(x) ((x)->xTdhl)
#define XmsTptr(x) ((x)->xTptr)
/*------------------------[ Function Prototypes ]-----------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/*- EMS functions ---------------*/
_HdlT PAS EMSalloc(IntT np); /* allocate pages */
IntT PAS EMSfree(_HdlT eh); /* free handle's pages */
ChrFP PAS EMSgetnam(_HdlT eh, /* get handle name */
ChrFP np);
IntT PAS EMScount(NOARG); /* get handle count */
IntT PAS EMSpages(_HdlT eh); /* get handle's page count */
IntT PAS EMSmap(_HdlT eh, IntT pp, /* map physical to logical pages */
IntT lp);
IntT PA